iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
自我挑戰組

<< Unreal 進廠維修,就從賽車遊戲開始 >>系列 第 15

Day15. 【Unreal Engine 5】從高級賽車模板看 UE5(11):車輛藍圖 - 控制視角&切換視角

  • 分享至 

  • xImage
  •  

閱讀提醒:本文會以解析高級賽車模板功能來介紹 Vehicle Blueprint(車輛藍圖)如何撰寫車輛的視角控制。

食用說明:閱讀此篇前,請先到 Project Setting 設定 Engine Input。
https://ithelp.ithome.com.tw/articles/10295600

Unreal Engine:5.03 高級賽車模板

OS:Windows10

本文大綱

1. 滑鼠控制視角
2. 第一人稱及第三人稱視角切換

寫完了基本的移動控制,現在就來看看視角控制吧!

今天就從玩家可以透過滑鼠控制相機視角開始吧~

滑鼠控制視角

這塊可以實現當你使用第三人稱視角,可以使用滑鼠控制相機的視角,並且視角會圍繞車輛本身。

首先一樣請大家先到 Project Setting 設定好 Engine Input。(連結在最上方)

  • 我們從視角的 Input 開始吧,首先新增 InputAxis LookRight 事件及 Branch,並點擊 Axis Value 節點拖曳至空白處並搜尋及新增 not equal ( != 不等於),將其 Output 連上 BranchCondition 節點。

  • True 節點:若玩家正在使用滑鼠旋轉視角,則為 True

    • 若為 True,先從節點新增 Add Local Rotation ( Back Camera 的 Spring Arm),設定旋轉視角需圍繞著車輛,並在 Delta Rotation 上方點擊右鍵,選擇 Split Struct Pin,將節點展開,並將 Z 軸節點與 Axis Value 節點連上。
  • False 節點:重設相機的角度

    • 若為 False,則從節點新增 Set Relative Rotation,並將 Target 節點連上 Spring Arm
    • 接下來,一樣從 Z 軸 新增傅立葉插值 Finterp To,會根據時間、速度執行插值,平滑相機以固定的速度回到原始的角度。
    • Spring Arm 拖曳到空白處,接著新增 Get Relative Rotation,並點擊右鍵選擇 Split Struct Pin 展開,將 Z 軸 做為 Current 輸入值。
    • 新增 Get World Delta Seconds 並傳遞給 Delta Time 節點,亦為須要在規定的速度內完成插值,也就是 Current 的值到 Target 值(0~1)。

如下圖,整個邏輯串起來之後,就會長這樣~

第一人稱及第三人稱視角切換

在模板中,車輛的視角預設是第三人稱,也就是使用後攝影機在追蹤車輛的行駛,若想要切換成第一人稱視角,就必須改成前攝影機(方向盤那座)。

  • 首先新增 InputAction Switch Camera 的事件,將 Pressed 節點連接上 Deactivate,也就是停用事件,並將事件 Target 連上 Front CameraBack Camera
  • 再來新增 Flip Flop 節點,執行到該節點時,它會輪流執行 AB 節點的事件。
  • AB 節點分別新增 Activate,也就是啟用事件,並將 Front CameraBack Camera 分別輸入 Target

也就是說,我們給一個切換視角的 Input,會先停用所有的攝影機,再利用Flip Flop 節點去輪流執行啟用前攝影機或後攝影機。

TIPS:
除了大區塊註解可以按 C 之外,還可以在各個藍圖事件、函數、變數上點擊右鍵,在 NODE COMMENT 輸入要註解的內容,並按 Enter 鍵,就會出現在事件的上方。

小結:視角的控制就到這邊囉~明天好像剩下 UI 的部份!各位加油~ ٩(๑•̀ω•́๑)۶

/images/emoticon/emoticon22.gif


上一篇
Day14. 【Unreal Engine 5】從高級賽車模板看 UE5(10):車輛藍圖 - 移動&煞車 & 煞車燈
下一篇
Day16. 【Unreal Engine 5】 學習 UE5 期間,我該去哪裡找免費素材呢?
系列文
<< Unreal 進廠維修,就從賽車遊戲開始 >>30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言